package com.xusl.spring.proxy;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;

/**
 * 生产cglib代理对象工厂
 *
 * @Author: xusl
 * @Date: 2021/8/4 10:04 下午
 */
public class CglibProxy {

    /**
     * 获取代理对象
     *
     * @param obj
     * @return
     */
    public static Object getProxy(Object obj) {

        return Enhancer.create(obj.getClass(), (MethodInterceptor) (o, method, objects, methodProxy) -> {
            System.out.println("obj接口执行前置增强");

            Object result = method.invoke(obj, objects);

            System.out.println("obj接口执行后置增强");

            // 被代理对象执行结果返回
            return result;
        });
    }
}
